package com.itheima.chat.fragment;

import android.content.Context;
import android.os.Bundle;
import android.text.TextUtils;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;

import com.itheima.chat.R;
import com.itheima.chat.activity.LoginActivity;
import com.itheima.chat.base.BaseFragment;
import com.itheima.chat.db.AccountDao;
import com.itheima.chat.domain.Account;
import com.itheima.chat.utils.ToastUtil;
import com.itheima.netcore.HMChatManager;
import com.itheima.netcore.HMObjectCallback;

import java.util.HashMap;
import java.util.Map;


public class SignUpFra extends BaseFragment implements OnClickListener
{
    private String TAG = "SignUpFra";

    private EditText etAccount;
    private EditText etPwd;
    private Button   btnSignUp;

    @Override
    public View onCreateView(LayoutInflater inflater,
                             ViewGroup container,
                             Bundle savedInstanceState)
    {
        View view = inflater.inflate(R.layout.fra_sign_up,
                                     container,
                                     false);

        initView(view);
        initEvent();
        return view;
    }

    private void initEvent()
    {
        btnSignUp.setOnClickListener(this);
    }

    private void initView(View view)
    {
        etAccount = (EditText) view.findViewById(R.id.et_sign_up_account);
        etPwd = (EditText) view.findViewById(R.id.et_sign_up_pwd);
        btnSignUp = (Button) view.findViewById(R.id.btn_sign_up);

    }

    @Override
    public void onClick(View v)
    {
        if (v == btnSignUp)
        {
            doSignUp();
        }
    }

    private void doSignUp()
    {
        Context context = getActivity();
        if (context == null)
        {
            return;
        }

        String account = etAccount.getText()
                                  .toString()
                                  .trim();
        if (TextUtils.isEmpty(account))
        {
            ToastUtil.show(context,
                           "用户名为空");
            return;
        }
        String password = etPwd.getText()
                               .toString()
                               .trim();
        if (TextUtils.isEmpty(password))
        {
            ToastUtil.show(context,
                           "密码为空");
            return;
        }
        //调用网络模块中的请求数据方式去获取数据

        String url = "http://10.0.2.2:8080/ChatServer/register";

        Map<String, String> parameters = new HashMap<String, String>();
        parameters.put("account",
                       account);
        parameters.put("password",
                       password);
        //访问网络
        HMChatManager.getInstance()
                     .send(url,
                           null,
                           parameters,
                           new HMObjectCallback<Account>()
                           {
                               @Override
                               public void onSuccess(Account data)
                               {
                                   Log.d(TAG,
                                         "访问网络成功 : " + data);
//                                  页面跳转
                                   System.out.println("1111111111111111111");
                                   // 存储用户
                                   AccountDao dao = new AccountDao(getActivity());
                                   data.setCurrent(true);
                                   System.out.println("222222222222222222222");
                                   Account localAccount = dao.getByAccount(data
                                                                                   .getAccount());
                                   if (localAccount != null)
                                   {
                                       dao.updateAccount(data);
                                   } else
                                   {
                                       dao.addAccount(data);
                                   }

                                   System.out.println("33333333333333333333");

                                   ((LoginActivity) getActivity()).go2FillInfo();

                                   System.out.println("44444444444444444444");

                               }
                               @Override
                               public void onFailure(int errorCode,
                                                     String errorString)
                               {
                                   Log.d(TAG,
                                         "访问网络失败 : " + errorCode + " : " + errorString);
                               }
                           });


        //去网络获取数据 TODO:
//        HttpUtils utils = new HttpUtils();
//        // url
//        String url = "http://10.0.2.2:8080/ChatServer/register";
//        // 请求参数
//        RequestParams params = new RequestParams();
//        params.addBodyParameter("account",
//                                account);
//        params.addBodyParameter("password",
//                                password);
//
//        utils.send(HttpRequest.HttpMethod.POST,
//                   url,
//                   params,
//                   new RequestCallBack<String>()
//                   {
//
//                       @Override
//                       public void onSuccess(ResponseInfo<String> stringResponseInfo)
//                       {
//                           String result = stringResponseInfo.result;
//                           //成功
//                           Log.d(TAG,
//                                 "访问网络成功 : " + result);
//                           // 解析 TODO:
//
//                           // 页面展示 TODO:
//                       }
//                       @Override
//                       public void onFailure(HttpException e,
//                                             String s)
//                       {
//                           //失败
//                           Log.d(TAG,
//                                 "访问网络失败 : " + s);
//                       }
//                   });


//		final DialogLoading dialog = new DialogLoading(getActivity());
//		dialog.show();
//
//		HMChatManager.getInstance().register(account, password,
//				new HMObjectCallBack<Account>() {
//
//					@Override
//					public void onSuccess(Account account) {
//						Log.d(TAG, "注册成功!!!");
//						dialog.dismiss();
//
//						// 初始化用户连接安全信�?						HMChatManager.getInstance().initAccount(
//								account.getAccount(), account.getToken());
//
//						// 存储用户
//						AccountDao dao = new AccountDao(getActivity());
//						account.setCurrent(true);
//
//						Account localAccount = dao.getByAccount(account
//								.getAccount());
//						if (localAccount != null) {
//							dao.updateAccount(account);
//						} else {
//							dao.addAccount(account);
//						}
//
//						// �?��服务
//						if (!CommonUtil.isServiceRunning(getActivity(),
//								ChatCoreService.class)) {
//							getActivity().startService(
//									new Intent(getActivity(),
//											ChatCoreService.class));
//						}
//
//						FriendDao friendDao = new FriendDao(getActivity());
//						Friend friend = friendDao.queryFriendByAccount(
//								account.getAccount(), "HMChat");
//						if (friend == null) {
//							// 初始化�?讯录
//							friend = new Friend();
//							friend.setOwner(account.getAccount());
//							friend.setAccount("HMChat");
//							friend.setAlpha("H");
//							friend.setArea("");
//							friend.setIcon("");
//							friend.setName("黑信团队");
//							friend.setNickName("");
//							friend.setSort(1000);
//
//							friendDao.addFriend(friend);
//
//							MessageDao messageDao = new MessageDao(
//									getActivity());
//							Message message = new Message();
//							message.setAccount("HMChat");
//							message.setContent("欢迎使用黑信，黑信会给你带来更多精彩");
//							message.setCreateTime(System.currentTimeMillis());
//							message.setDirection(1);
//							message.setOwner(account.getAccount());
//							message.setRead(false);
//							messageDao.addMessage(message);
//						}
//
//						((LoginActivity) getActivity()).go2FillInfo();
//					}
//
//					@Override
//					public void onError(int error, String msg) {
//						dialog.dismiss();
//
//						switch (error) {
//						case HMError.ERROR_CLIENT_NET:
//							Log.d(TAG, "客户端网络异�?);
//							ToastUtil.show(getActivity(), "客户端网络异�?);
//							break;
//						case HMError.ERROR_SERVER:
//							Log.d(TAG, "服务器异�?);
//							ToastUtil.show(getActivity(), "服务器异�?);
//							break;
//						case HMError.Register.ACCOUNT_EXIST:
//							Log.d(TAG, "用户已经存在");
//							ToastUtil.show(getActivity(), "用户已经存在");
//							break;
//						default:
//							break;
//						}
//					}
//				});
    }
}